package org.springblade.modules.repair.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.modules.repair.dto.CheckPlanDeptCountDTO;
import org.springblade.modules.repair.dto.CheckPlanTrendQueryDTO;
import org.springblade.modules.repair.dto.PlanCheckStatisticsQueryDTO;
import org.springblade.modules.repair.entity.MaintainPlanUserDayCount;
import org.springblade.modules.repair.vo.*;
import org.springblade.modules.repair.vo.check.PlanCheckStatisticsBuildingPageVO;
import org.springblade.modules.repair.vo.statistics.by.*;

import java.util.List;
import java.util.Map;

public interface MaintainPlanUserDayCountService extends BaseService<MaintainPlanUserDayCount> {

	List<CheckPlanTrendVO> selectUserCheckPlanTrend(CheckPlanTrendQueryDTO queryDTO);

    CheckPlanUserCountVO selectCheckPlanCount(Long userId,String startTime,String endTime,Integer useType);

	CheckPlanUserCountVO selectCheckPlanDeptCount(CheckPlanDeptCountDTO queryDTO);

	CheckStatisticsWorkTimeDetailVO selectCheckWorkTimeDeptDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsWorkTimeCountVO> selectCheckWorkTimeDeptCount(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsWorkTimeCountVO> selectCheckWorkTimeDeptUserCount(PlanCheckStatisticsQueryDTO queryDTO);

	List<MaintainPlanUserDayCount> listAllByPlanner();

	CheckStatisticsStatusDetailVO selectCheckStatusDeptDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsStatusCountVO> selectCheckStatusDeptCount(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsStatusCountVO> selectCheckStatusDeptUserCount(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsTimelinessDetailVO selectCheckTimelinessDeptDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTimelinessCountVO> selectCheckTimelinessDeptCount(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTimelinessCountVO> selectCheckTimelinessDeptUserCount(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsDurationDetailVO selectCheckDurationDeptDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsDurationCountVO> selectCheckDurationDeptCount(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsDurationCountVO> selectCheckDurationDeptUserCount(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsSignDetailVO selectCheckSignDeptDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsSignCountVO> selectCheckSignDeptCount(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsSignCountVO> selectCheckSignDeptUserCount(PlanCheckStatisticsQueryDTO queryDTO);

    List<CheckStatisticsTrendVO> selectCheckTrendEntiretyWorkTime(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendEntiretyStatus(PlanCheckStatisticsQueryDTO queryDTO);

    List<CheckStatisticsTrendVO> selectCheckTrendEntiretyTimeliness(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendEntiretySign(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastDeptWorkTime(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastUserWorkTime(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastDeptStatus(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastUserStatus(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastDeptTimeliness(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastUserTimeliness(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastDeptSign(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastUserSign(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsWorkTimeDetailVO selectCheckWorkTimeUserDetail(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsStatusDetailVO selectCheckStatusUserDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsUserCountVO> selectCheckStatusUserCount(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsTimelinessDetailVO selectCheckTimelinessUserDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsUserCountVO> selectCheckTimelinessUserCount(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsDurationDetailVO selectCheckDurationUserDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsUserCountVO> selectCheckDurationUserCount(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsSignDetailVO selectCheckSignUserDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsUserCountVO> selectCheckSignUserCount(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsOverdueDetailVO selectCheckOverdueDeptDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsOverdueCountVO> selectCheckOverdueDeptCount(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsOverdueCountVO> selectCheckOverdueDeptUserCount(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendEntiretyOverdue(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastDeptOverdue(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastUserOverdue(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsOverdueDetailVO selectCheckOverdueUserDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsUserCountVO> selectCheckOverdueUserCount(PlanCheckStatisticsQueryDTO queryDTO);

    List<CheckStatisticsTrendVO> selectCheckTrendEntiretyWorkDuration(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsWorkTimeDetailVO selectCheckWorkDurationDeptDetail(PlanCheckStatisticsQueryDTO queryDTO);

	CheckStatisticsWorkTimeDetailVO selectCheckWorkDurationUserDetail(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsWorkTimeCountVO> selectCheckWorkDurationDeptCount(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsWorkTimeCountVO> selectCheckWorkDurationDeptUserCount(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastDeptWorkDuration(PlanCheckStatisticsQueryDTO queryDTO);

	List<CheckStatisticsTrendVO> selectCheckTrendContrastUserWorkDuration(PlanCheckStatisticsQueryDTO queryDTO);

	Map<String,Object> selectPlanCheckBuildingElevatorPage(IPage<PlanCheckStatisticsBuildingPageVO> page, PlanCheckStatisticsQueryDTO queryDTO);
}
